Objetivo

O presente estudo está em fase inicial e visa entender os registros dos acidentes de trânsito no Estado de São Paulo expondo as situações em que eles ocorrem e possibilitando a adoção de estratégias para minimizá-los. Os dados foram obtidos no portal do Movimento Paulista de Segurança no Trânsito (http://www.infosiga.sp.gov.br/Home/Relatorio) e contemplam o período de janeiro/2015 a novembro/2018

Carregando as libs e preparando os dados

library(scales)
library(plotly)
library(dplyr)
library(readr)
library(lubridate)
library(leaflet)

at2015 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2015.csv", 
    ";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"), 
    trim_ws = TRUE)

at2016 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2016.csv", 
    ";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"), 
    trim_ws = TRUE)

at2017 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2017.csv", 
    ";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"), 
    trim_ws = TRUE)

at2018 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2018.csv", 
    ";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"), 
    trim_ws = TRUE)

at <- rbind(at2015, at2016, at2017, at2018)

at %>% mutate(data = dmy(paste('01', at$`Mês Óbito`, at$`Ano Óbito`))) %>% 
  mutate(Trimestre = quarter(data)) -> at

at %>% mutate(lat = as.numeric(gsub(',', ".", at$`LAT_(geo)`))) -> at
at %>% mutate(lon = as.numeric(gsub(',', ".", at$`LONG_(geo)`))) -> at

Por ano

at %>% count(`Ano Óbito`) %>%
        ggplot(aes(x=`Ano Óbito`, y=n)) + geom_bar(stat='identity', fill='red') +
        scale_y_continuous(labels=comma) +
        labs(x='Ano', y='Número de Óbitos', title='Óbitos por Ano')

Por trimestre

at %>% select(`Ano Óbito`, Trimestre) %>% group_by(`Ano Óbito`) %>% count(Trimestre) %>%
        ggplot(aes(x=as.factor(Trimestre), y=n)) + geom_bar(stat='identity', fill='red') +
        scale_y_continuous(labels=comma) + facet_grid(.~`Ano Óbito`) + labs(x='Trimestre', y='Número de Óbitos')

Por mês

at %>% count(data) %>% 
        ggplot(aes(x=month(data, label=TRUE), y=n)) + geom_bar(stat='identity', fill='red') +
        scale_y_continuous(labels=comma) +
        labs(x='Mês', y='Número de Óbitos', title='Óbitos por Mês')

Por dia da semana

at %>% count(data) %>% 
        ggplot(aes(x=wday(data, label=TRUE), y=n)) + geom_bar(stat='identity', fill='red') +
        scale_y_continuous(labels=comma) +
        labs(x='Dia', y='Número de Óbitos', title='Óbitos por Dia da Semana')

Por Turno

at %>% count(Turno) %>%
        ggplot(aes(x=Turno, y=n)) + geom_bar(stat='identity', fill='red') +
        scale_y_continuous(labels=comma) +
        labs(x='Turno', y='Número de Óbitos', title='Óbitos por Turno')

Distribuição dos acidentes

at %>% filter(!is.na(lat) & !is.na(lon)) %>% leaflet() %>%
        setView(lng=-48, lat=-22.5, zoom=7) %>%
        addTiles() %>%
        addProviderTiles("CartoDB.Positron") %>%
        addScaleBar %>%
        addMarkers(~lon, ~lat, 
              label = ~paste0("<strong>Cidade: </strong>", `Cidade Considerada`, 
                 "<br><strong>Tipo de Acidente: </strong>", `Tipo Acidente`,
                 "<br><strong>Tipo de Veículo: </strong>", `Tipo Veiculo`) %>% lapply(htmltools::HTML),
                clusterOptions = markerClusterOptions())

Conclusão

Muitas informações ainda podem ser extraídas desses registros, mas, como trata-se de um trabalho em desenvolvimento, foram expostos somente alguns pontos para a apresentação de uma visão geral.

Os próximos passos são explorar os incidentes por gênero, faixa etária, cidade, tipo de acidente, via, tipo de veículo, relacionar esses dados com o número de habitantes por cidade (acredito que conseguirei esses dados no IBGE) para chegar a números relativos.